// pages/profile/profile.js
const authService = require('../../utils/auth.js');
const { getIconUrl, getImageUrl } = require('../../utils/imageUtils.js');
const api = require('../../utils/api.js');

Page({
  /**
   * 页面的初始数据
   */
  data: {
    // 用户信息
    userInfo: {
      avatarUrl: '',
      nickName: '',
      isLogin: false
    },
    // 显示登录弹窗
    showLogin: false,
    // 显示微信名片弹窗
    showWechatCard: false,
    // 图片资源URLs
    weixinQrUrl: getIconUrl('weixin.png'),
    // 收藏数量
    favoriteCount: 12,
    // 钱包余额
    balance: '0.00',
    // 未完成任务数
    unfinishedTasks: 3
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    console.log('我的页面加载');
    this.checkLoginStatus();
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 页面显示时刷新用户数据
    this.refreshUserData();
  },

  /**
   * 检查登录状态
   */
  checkLoginStatus() {
    const loginStatus = authService.checkLoginStatus();
    if (loginStatus.isLogin) {
      this.setData({
        userInfo: {
          ...loginStatus.userInfo,
          isLogin: true
        }
      });
    }
  },

  /**
   * 刷新用户数据
   */
  refreshUserData() {
    // 刷新收藏数量、余额等数据
    this.loadFavoriteCount();
    this.loadBalance();
    this.loadTaskCount();
  },

  /**
   * 加载收藏数量
   */
  loadFavoriteCount() {
    // 从本地存储或服务器获取收藏数量
    const favorites = wx.getStorageSync('favorites') || [];
    this.setData({
      favoriteCount: favorites.length
    });
  },

  /**
   * 加载钱包余额
   */
  loadBalance() {
    // 从本地存储或服务器获取余额
    const balance = wx.getStorageSync('balance') || '0.00';
    this.setData({
      balance
    });
  },

  /**
   * 加载任务数量
   */
  loadTaskCount() {
    // 从本地存储或服务器获取未完成任务数
    const tasks = wx.getStorageSync('tasks') || [];
    const unfinishedTasks = tasks.filter(task => !task.completed).length;
    this.setData({
      unfinishedTasks
    });
  },

  /**
   * 显示登录弹窗
   */
  showLoginModal() {
    if (!this.data.userInfo.isLogin) {
      this.setData({
        showLogin: true
      });
    }
  },

  /**
   * 隐藏登录弹窗
   */
  hideLoginModal() {
    this.setData({
      showLogin: false
    });
  },

  /**
   * 获取用户信息（新版本登录）
   */
  async onGetUserProfile() {
    try {
      wx.showLoading({
        title: '登录中...'
      });

      const loginResult = await authService.login();
      
      if (loginResult.success) {
        this.setData({
          userInfo: {
            ...loginResult.data,
            isLogin: true
          },
          showLogin: false
        });
        
        wx.showToast({
          title: '登录成功',
          icon: 'success'
        });
        
        // 刷新用户数据
        this.refreshUserData();
      }
    } catch (error) {
      console.error('登录失败:', error);
      wx.showToast({
        title: error.message || '登录失败',
        icon: 'none'
      });
    } finally {
      wx.hideLoading();
    }
  },

  /**
   * 获取用户信息（兼容旧版本）
   */
  onGetUserInfo(event) {
    const { userInfo } = event.detail;
    if (userInfo) {
      this.performLogin(userInfo);
    } else {
      wx.showToast({
        title: '登录失败',
        icon: 'none'
      });
    }
  },

  /**
   * 执行登录
   */
  async performLogin(userInfo) {
    try {
      wx.showLoading({
        title: '登录中...'
      });

      const loginResult = await authService.wechatLogin(userInfo);
      
      if (loginResult.success) {
        this.setData({
          userInfo: {
            ...loginResult.data,
            isLogin: true
          },
          showLogin: false
        });
        
        wx.showToast({
          title: '登录成功',
          icon: 'success'
        });
        
        // 刷新用户数据
        this.refreshUserData();
      }
    } catch (error) {
      console.error('登录失败:', error);
      wx.showToast({
        title: error.message || '登录失败',
        icon: 'none'
      });
    } finally {
      wx.hideLoading();
    }
  },

  /**
   * 升级VIP
   */
  upgradeVip() {
    if (!this.data.userInfo.isLogin) {
      this.showLoginModal();
      return;
    }
    
    wx.navigateTo({
        url: '/pages/profile/vip/vip'
      });
  },

  /**
   * 导航到我的想象（AI生图）
   */
  navigateToImagination() {
    wx.navigateTo({
      url: '/pages/ai-generate/ai-generate'
    });
  },

  /**
   * 页面导航
   */
  navigateTo(event) {
    const url = event.currentTarget.dataset.url;
    if (!this.data.userInfo.isLogin && this.needLogin(url)) {
      this.showLoginModal();
      return;
    }
    
    wx.navigateTo({
      url
    });
  },

  /**
   * 判断是否需要登录
   */
  needLogin(url) {
    const loginRequiredPages = [
      '/pages/profile/favorites/favorites',
      '/pages/profile/wallet/wallet',
      '/pages/profile/tasks/tasks',
      '/pages/profile/share/share'
    ];
    return loginRequiredPages.includes(url);
  },

  /**
   * 清除所有记录
   */
  clearAllRecords() {
    wx.showModal({
      title: '确认清除',
      content: '确定要清除所有聊天记录吗？此操作不可恢复。',
      confirmText: '确定清除',
      confirmColor: '#ff4757',
      success: (res) => {
        if (res.confirm) {
          // 清除本地存储的聊天记录
          wx.removeStorageSync('chatHistory');
          wx.removeStorageSync('conversations');
          
          wx.showToast({
            title: '清除成功',
            icon: 'success'
          });
        }
      }
    });
  },

  /**
   * 联系客服 - 显示微信名片
   */
  contactService() {
    this.setData({
      showWechatCard: true
    });
  },

  /**
   * 隐藏微信名片弹窗
   */
  hideWechatCard() {
    this.setData({
      showWechatCard: false
    });
  },

  /**
   * 保存微信名片图片
   */
  saveWechatCard() {
    wx.downloadFile({
      url: getIconUrl('weixin.png'),
      success: (res) => {
        if (res.statusCode === 200) {
          wx.saveImageToPhotosAlbum({
            filePath: res.tempFilePath,
            success: () => {
              wx.showToast({
                title: '已保存到相册',
                icon: 'success'
              });
              this.hideWechatCard();
            },
            fail: () => {
              wx.showModal({
                title: '保存失败',
                content: '请允许访问您的相册权限',
                confirmText: '去设置',
                success: (modalRes) => {
                  if (modalRes.confirm) {
                    wx.openSetting();
                  }
                }
              });
            }
          });
        } else {
          wx.showToast({
            title: '图片下载失败',
            icon: 'none'
          });
        }
      },
      fail: () => {
        // 本地图片，直接保存
        wx.saveImageToPhotosAlbum({
          filePath: getIconUrl('weixin.png'),
          success: () => {
            wx.showToast({
              title: '已保存到相册',
              icon: 'success'
            });
            this.hideWechatCard();
          },
          fail: () => {
            wx.showModal({
              title: '保存失败',
              content: '请允许访问您的相册权限',
              confirmText: '去设置',
              success: (modalRes) => {
                if (modalRes.confirm) {
                  wx.openSetting();
                }
              }
            });
          }
        });
      }
    });
  },

  /**
   * 显示用户协议
   */
  showAgreement() {
    wx.navigateTo({
      url: '/pages/profile/agreement/agreement'
    });
  },

  /**
   * 显示隐私政策
   */
  showPrivacy() {
    wx.navigateTo({
      url: '/pages/profile/privacy/privacy'
    });
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.refreshUserData();
    wx.stopPullDownRefresh();
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: 'AI伙伴 - 您的专属AI助理',
      path: '/pages/assistant/assistant',
      imageUrl: getImageUrl('share-logo.png')
    };
  },

  /**
   * 退出登录
   */
  logout() {
    wx.showModal({
      title: '确认退出',
      content: '确定要退出登录吗？',
      confirmText: '退出',
      confirmColor: '#ff4757',
      success: (res) => {
        if (res.confirm) {
          const result = authService.logout();
          if (result.success) {
            this.setData({
              userInfo: {
                avatarUrl: '',
                nickName: '',
                isLogin: false
              },
              favoriteCount: 0,
              balance: '0.00',
              unfinishedTasks: 0
            });
            
            wx.showToast({
              title: '已退出登录',
              icon: 'success'
            });
          }
        }
      }
    });
  },

  /**
   * 分享到朋友圈
   */
  onShareTimeline() {
    return {
      title: 'AI伙伴 - 让AI成为你的得力助手',
      imageUrl: getImageUrl('share-timeline.png')
    };
  }
});